﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Flagwind.ComponentModel;

namespace Flagwind.Infrastructure.ComponentModel.Instructions
{
	/// <summary>
	/// 表示数据传输对象集合。
	/// </summary>
	/// <typeparam name="T">数据传输对象类型。</typeparam>
	[Serializable]
	public class DataObjectList<T> : List<T>, IDataObject where T : class, IDataObject, new()
	{
		#region 公共方法

		/// <summary>
		/// 获取数据对象的验证结果集。
		/// </summary>
		/// <returns>验证结果集。</returns>
		public IEnumerable<ValidationResult> GetValidationErrors()
		{
			return this.Validate();
		}

		#endregion

		#region 虚拟方法

		/// <summary>
		/// 验证当前请求命令的参数。
		/// </summary>
		protected virtual IEnumerable<ValidationResult> Validate()
		{
			return new List<ValidationResult>();
		}

		#endregion
	}
}
